package com.gxa.mapper;

import com.gxa.pojo.PowerMenu;
import com.gxa.pojo.Role;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author makejava
 * Date: ${YEAR}/${MONTH}/${DAY}
 * Description: (Role)表数据库访问层
 * Version: V1.0
 */
public interface RoleMapper {

    /**
     * 通过ID查询单条数据
     *
     * @param roleId 主键
     * @return 实例对象
     */
    Role queryById(Integer roleId);

    /**
     * 查询指定行数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    List<Role> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit);


    /**
     * 查询所有角色实体
     *
     *
     * @return 对象列表
     */
    List<Role> queryAll();

    /**
     * 新增数据
     *
     * @param role 实例对象
     * @return 影响行数
     */
    int addRole(Role role);

    /**
     * 修改数据
     *
     * @param role 实例对象
     * @return 影响行数
     */
    int update(Role role);

    /**
     * 通过主键删除数据
     *
     * @param roleId 主键
     * @return 影响行数
     */
    int deleteById(Integer roleId);

    /**
     * 给角色添加权限
     * @param roleId
     * @param powerId
     * @return
     */
    int addRolePower(int roleId, int powerId);

    List<Role> findRoleByEmployee(Integer employeeId);

    List<PowerMenu> findPowerMenuByRoleId(List<Integer> listRoleId);

    List<Map<String,Object>> selectRolePowerByRoleId(int roleId);

    void deleteRole_powerByRoleId(int roleId);

    List<PowerMenu> queryPowerByRoleId(@Param("role_id")Integer roleId);

    List<String> selectRoleName();
}